#include "gd32f4xx_it.h"
#include "uart.h"


void USART0_IRQHandler(void)
{
	u16 first;
	u16 last;
	if(RESET != usart_flag_get(USART0, USART_FLAG_IDLEF)){	//总线空闲 接收完成
		USART_DATA(USART0);									//读数据寄存器，清除IDLE标志
		first=mUart[0].rx_queue.dma_addr;					//第一个字节地址
		last=UART_RX_BUFLEN-DMA_CHCNT(DMA1,DMA_CH2);		//最后一个字节地址
		mUart[0].rx_queue.dma_addr=last;					//更新DMA写到的地址
		uart_rx_write_to_queue(0,first,last);				//写入队列
	}
}
void DMA1_Channel3_IRQHandler(void)
{
	if(RESET!=dma_interrupt_flag_get(DMA1,DMA_CH3,DMA_INTF_FTFIF)){
		dma_interrupt_flag_clear(DMA1,DMA_CH3,DMA_INTF_FTFIF);
		mSystem.flags.adc_bat_ok=1;
	}
}
void DMA1_Channel7_IRQHandler(void)
{
	if(RESET!=dma_interrupt_flag_get(DMA1,DMA_CH7,DMA_INTF_FTFIF)){
		dma_interrupt_flag_clear(DMA1,DMA_CH7,DMA_INTF_FTFIF);
		mUart[0].tx_queue.flags.busy=0;
		dma_channel_disable(DMA1, DMA_CH7);
	}
}
void USART1_IRQHandler(void)
{
	u16 first;
	u16 last;
	if(RESET != usart_flag_get(USART1, USART_FLAG_IDLEF)){	//总线空闲 接收完成
		USART_DATA(USART1);									//读数据寄存器，清除IDLE标志
		first=mUart[1].rx_queue.dma_addr;					//第一个字节地址
		last=UART_RX_BUFLEN-DMA_CHCNT(DMA0,DMA_CH5);		//最后一个字节地址
		mUart[1].rx_queue.dma_addr=last;					//更新DMA写到的地址
		uart_rx_write_to_queue(1,first,last);				//写入队列
	}
}
void DMA0_Channel6_IRQHandler(void)
{
	if(RESET!=dma_interrupt_flag_get(DMA0,DMA_CH6,DMA_INTF_FTFIF)){
		dma_interrupt_flag_clear(DMA0,DMA_CH6,DMA_INTF_FTFIF);
		mUart[1].tx_queue.flags.busy=0;
		dma_channel_disable(DMA0, DMA_CH6);
	}
}
void USART2_IRQHandler(void)
{
	u16 first;
	u16 last;
	if(RESET != usart_flag_get(USART2, USART_FLAG_IDLEF)){	//总线空闲 接收完成
		USART_DATA(USART2);									//读数据寄存器，清除IDLE标志
		first=mUart[2].rx_queue.dma_addr;					//第一个字节地址
		last=UART_RX_BUFLEN-DMA_CHCNT(DMA0,DMA_CH1);		//最后一个字节地址
		mUart[2].rx_queue.dma_addr=last;					//更新DMA写到的地址
		uart_rx_write_to_queue(2,first,last);				//写入队列
	}
}
void DMA0_Channel3_IRQHandler(void)
{
	if(RESET!=dma_interrupt_flag_get(DMA0,DMA_CH3,DMA_INTF_FTFIF)){
		dma_interrupt_flag_clear(DMA0,DMA_CH3,DMA_INTF_FTFIF);
		mUart[2].tx_queue.flags.busy=0;
		dma_channel_disable(DMA0, DMA_CH3);
	}
}
void UART3_IRQHandler(void)
{
	u16 first;
	u16 last;
	if(RESET != usart_flag_get(UART3, USART_FLAG_IDLEF)){	//总线空闲 接收完成
		USART_DATA(UART3);									//读数据寄存器，清除IDLE标志
		first=mUart[3].rx_queue.dma_addr;					//第一个字节地址
		last=UART_RX_BUFLEN-DMA_CHCNT(DMA0,DMA_CH2);		//最后一个字节地址
		mUart[3].rx_queue.dma_addr=last;					//更新DMA写到的地址
		uart_rx_write_to_queue(3,first,last);				//写入队列
	}
}
void DMA0_Channel4_IRQHandler(void)
{
	if(RESET!=dma_interrupt_flag_get(DMA0,DMA_CH4,DMA_INTF_FTFIF)){
		dma_interrupt_flag_clear(DMA0,DMA_CH4,DMA_INTF_FTFIF);
		mUart[3].tx_queue.flags.busy=0;
		dma_channel_disable(DMA0, DMA_CH4);
	}
}
//串口4没有做接收
void UART4_IRQHandler(void)
{
	
}

